package com.itc.system.api.listener;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import javax.persistence.Column;

/**
 * 航班协同时隙信息
 */
@TableName("ntfmf_cti")
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class NtfmfCti {
    /**
     *发送时间
     */
    private String messageSendDateTime;
    /**
     *提交方自定义的消息唯一标识符，用于唯一标识该消息
     */
    private String messageSequence;
    /**
     *消息类型（示例：全国流量系统引接机场数据NTFMINPUT, 全国流量系统向机场输出NTFMOUTPUT）
     */
    private String messageType;
    /**
     *消息子类型
     */
    private String messageSubType;
    /**
     *消息发送类型：全量/增量_消息数据量_消息当前页数（从0开始编号）_消息当前页数量（全量ALL  增量INC）
     */
    private String messageSendType;
    /**
     *数据提供者ID
     */
    private String sourceSystemId;
    /**
     *数据使用者ID
     */
    private String destinationSystemId;
    /**
     *版本号（为空则默认采用V0.1版）
     */
    private String version;
    /**
     *全球航班唯一标识符(O)
     */
    private String gufi;
    /**
     *计划目的地机场(M)
     */
    private String sarrap;
    /**
     *航空器识别标志(M)【航班号】
     */
    private String arcid;
    /**
     *预计降落时间
     */
    private String eldt;
    /**
     *航班唯一标识符(M)
     */
    private String guid;
    /**
     *计划离港时间(M)
     */
    private String sobt;
    /**
     *实际目的地机场
     */
    private String rarrap;
    /**
     *计划起飞机场(M)
     */
    private String sdepap;
    /**
     *预计撤轮挡时间(O)
     */
    private String eobt;
    /**
     *流控内容
     */
    private String ftmicontent;
    /**
     *计算撤轮档时间
     */
    private String cobt;
    /**
     *航班受控标识:0：不受限
     1：受限：航班受流控措施影
     */
    private String resflag;
    /**
     *前序航班计算起飞时间
     */
    private String fctot;
    /**
     *锁定标记:0：表示未锁定
     1：表示自动锁定
     2：表示解锁
     3：表示人工锁定
     */
    @JsonProperty("lock")
    private String lockStr;
    /**
     *计算起飞时间
     */
    private String ctot;
    /**
     *前序航班的航班号
     */
    private String farcid;
    /**
     *目标撤轮档
     */
    private String tobt;
    /**
     *临近流控
     */
    private String approachingTmicontent;
    /**
     *流控类型
     描述该航班受哪些措施类型影响，多措施以分号分隔。措施定义如下：
     G：航班受GDP措施影响
     A：航班受AFP措施影响
     M：航班受MIT措施影响
     S：航班受GS措施影响
     F：航班受纯高度影响
     D：航班需起飞申请
     T：航班需开车申请
     B：航班需上客申请
     X：航班受高度限制+间隔限制影响
     Z:人工指定CTOT
     说明:航班关联措施包括被措施豁免的流控。例如：若航班受某一MIT措施影响，但处于措施豁免状态，则该字段显示为M，但航班受控标识<RESFLAG>为0。
     */
    private String tmitype;
    /**
     *入池标识:0：不在池
     1：入等待池
     2：入保护池
     */
    private String wpflag;
    /**
     *时间标识：
     CTOT_INFO作为航班放行信息的补充，内容比较丰富，目前包括7类，每个INFO信息间以；进行分隔：
     1、‘>’+‘yyyyMMddhhmm’+‘;’表示未分配时隙，建议航班在该时段之后起飞。如>202101010830;；
     2、‘<’+‘yyyyMMddhhmm’+‘;’表示航班非受限，建议航班在该时间之前起飞。如<202101010830;；
     3、‘-’+‘yyyyMMddhhmm,’+‘yyyyMMddhhmm’+‘;’表示航班未分配时隙，建议航班在时段内起飞。如-202101010830,202101010850;，表示航班应该在2021年01月01日的08:30-08:50起飞，才不会进入受限时段；
     4、‘+’+‘yyyyMMddhhmm’+‘;’表示航班受GS影响，yyyyMMddhhmm为GS结束时间或由该结束时间推导出的CTOT时间。受该措施影响航班会有受限标志，没有CTOT，但有CTOT_INFO信息。如+202101010830;；
     5、‘*’+‘slot0/slot1/slot2’+‘;’表示含有MIT限制执行容差要求，其中slot0指受限执行尽量按CTOT时刻保障；slot1指受限执行容差：-3~+3分钟；slot2指受限执行容差：-5~+10分钟。如*slot1;；
     6、‘~’+‘受控点名’+‘:’+‘高度(S0000)’+‘;’表示受到高度约束（纯高度限制或高度与间隔结合的条件性限制）。示例： 过TUMLO点 去ZBAD、ZBTJ落地 只能<=S0660 30分钟一架。CTOT：202104270945 CTOT_INFO： ~TUMLO:S0660;
     ‘^’+‘4h+’+‘;’表示航班受限，分配CTOT在4小时之后。如^4h+;；
     */
    private String ctotInfo;
    /**
     *流控标识:航班受多条流控时，各流控标识中间以，隔开，每条流控的流控标识长度最大为64位
     */
    private String ftmid;
    /**
     *前序航班状态
     */
    private String fstat;
    /**
     *系统推测初始目标撤轮档时间:始发航班或基于前序推测的航班目标撤轮档时间
     */
    private String otobt;
    /**
     *入池说明:该字段与WPFLAG配套使用，主要对WPFLAG做进一步描述
     (1) WPFLAG为0情况下，该字段说明：
      0：未入过池
      1：出等待池
      2：出保护池
     (2) WPFLAG为1情况下，该字段说明：
      0：入池原因未知
      1：SCH前2小时未拍发FPL报，入等待池
      2：COBT+10分钟未准备好，入等待池
      3：CTOT+10分钟未起飞，入等待池
     (3) WPFLAG为2情况下，该字段说明：
      0：入池原因未知
      1：人工拖入保护池（航空器故障等原因）
     */
    private String wpexplain;


//    /**
//     *
//     */
//    private String flightId;

}
